#!/bin/bash

config='/usr/local/etc/regdirsvn/regdirsvn.conf'

if ! source $config; then
  echo "Can not open config file: $config"
  exit
fi

wd=`pwd`      # ワークディレクトリのフルパス
twd=${wd##*/} # ワークディレクトリ名の最後の名前
rwd=$repo$hostname$wd  # SVNへのURL

################################## ユーザ名 入力
while :;do
  read -p 'SVN user: ' user

  if [[ "$user" =~ '^[a-zA-Z].*$' ]]; then
    break
  fi
  echo "INCORRECT USER NAME"
done

################################# パスワード入力
read -sp "password: " password

################################# SVN 接続確認
if ! $svn ls --non-interactive --username $user --password $password $repo > /dev/null; then
  echo 'ERROR: Can not connect SVN server.'
  exit
fi

############################################ SVNフォルダ作成
declare -a addFolder
search=$rwd

# SVNに存在しているフォルダを探索
echo 'search: '$search
while ! $svn --non-interactive --username $user --password $password ls $search >/dev/null; do
  addFolder=($search "${addFolder[@]}")
  search=${search%/*}
  echo 'search: '$search
done

basePath=$tmp'/'${search##*/}
echo basePath: $basePath

if [ ! -e $tmp ]; then
  mkdir $tmp # 作業フォルダがなければ作る
  chmod 777 $tmp
fi

if [ -e $basePath ]; then
  echo ERROR: work folder already exist: $basePath
  exit
fi

echo
echo '>' mkdir $basePath
mkdir $basePath

echo
echo '>' $svn checkout --non-interactive --username $user --password $password -N $search $basePath
$svn checkout --non-interactive --username $user --password $password -N $search $basePath || exit

newPath=$basePath
# 不足していたフォルダを順に作成
for newURL in "${addFolder[@]}"; do
  newPath=$basePath${newURL#$search}
  echo
  echo '>' $svn mkdir --non-interactive --username $user --password $password $newPath
  $svn mkdir --non-interactive --username $user --password $password $newPath || exit
done

# 作成したフォルダをコミット
echo
echo '>' $svn commit --non-interactive --username $user --password $password -m 'regdirsvn' $basePath
$svn commit --non-interactive --username $user --password $password -m 'regdirsvn' $basePath || exit # コミット

# 古い.svnがあれば削除
if [ -e $wd'/.svn' ]; then
  echo
  echo '>' rm -rf $wd'/.svn'
  rm -rf $wd'/.svn'
fi

# .svnゲット
echo
echo '>' mv $newPath'/.svn' $wd'/.svn'
mv $newPath'/.svn' $wd'/.svn'

# 掃除して終了
echo
echo '>' rm -rf $basePath
rm -rf $basePath

############################################ 定期チェックリストへの登録
echo
echo 'REGISTRY'
echo $wd >> $regFile
sort -u $regFile -o $regFile

mkdir -p $recDir$wd
echo `date '+%Y-%m-%d %H:%M:%S %z'` "by $user" > $recDir$wd'/create'
